home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / hsrc_117.zip / READMESS.C < prev    next >
Text File  |  1990-11-12  |  9KB  |  358 lines

  1. #include "msgg.h"
  2. #include "twindow.h"
  3. #include "keys.h"
  4. #include "headedit.h"
  5.  
  6. word threadstart;
  7. extern WINDOW *ewnd;
  8.  
  9.  
  10. /* Buffer call before the main display() function */
  11.  
  12. void pascal read_mess (char type,char global) {
  13.  
  14.     int what;
  15.     char s[81];
  16.     word lastmess;
  17.     word tempmess;
  18.     word temparea;
  19.     word messmarker[10]={
  20.         0,0,0,0,0,0,0,0,0,0
  21.     };
  22.     word wasdeleted;
  23.  
  24.   threadstart=0;
  25.   if(!nomess) return;
  26.   if (type) {
  27.     lastmess=messno;
  28.     goto Over;
  29.   }
  30.  
  31. AllOver:
  32.   if (areano<(totalareas+1)) lastmess=lastread[areano-1];
  33.   if (lastmess<nomess && lastmess>0) {
  34.     tempmess=messno;
  35.     messno=lastmess+1;
  36.     if (tempmess!=messno) get_mess(0);
  37.   }
  38.   if(!messno) messno=1;
  39.   if (messno>nomess) messno=nomess;
  40.   get_mess(0);
  41.  
  42. Over:
  43.  
  44.     set_help ("readkeys  ",0,23);
  45.     clear_message();
  46.     current_color=readtextcolor + (readtextback*16);
  47.     dclrwnd(1,6,maxx,maxy);
  48.     current_color=readstatcolor + (readstatback*16);
  49.     if(!usemouse) {
  50.         if (lastmess<nomess) dprintf(2,maxy," F1=help /=menu -- New @ #%05u -- %05u messages -- Area #%04u           ",lastmess+1,nomess,areano);
  51.         else                 dprintf(2,maxy," F1=help /=menu -- No New msgs -- %05u messages -- Area #%04u            ",nomess,areano);
  52.     }
  53.     else dprintf(3,maxy," ?  %c      ¡   ≤ ≥ φ √ ¿ ≈ Click at top of screen for menu         ",26);
  54.  
  55. PartOver:
  56.  
  57.     current_color=readtextcolor + (readtextback*16);
  58.     dclrwnd(1,6,maxx,maxy-1);
  59.     show_header(0);
  60.     goto JustTheFacts;
  61.  
  62. Again:
  63.  
  64.     show_header(0);
  65.  
  66. JustTheFacts:
  67.  
  68.     highvideo();
  69.     current_color=readtextcolor+(readtextback*16);
  70.     printf("\r%s",make_ansi(readtextcolor,readtextback));
  71.     if (!(msg.attr & MSGREAD)) if (isitme(0)) update_read();
  72.     clear_message();
  73.     what=display(&lastmess,type);
  74.     switch (what) {
  75.         case ALT_B:        *lastreply=0;
  76.                         goto DoBackward;
  77.         case ALT_F:     *lastmsgid=0;
  78.         case CTRL_F:    if(!thread('F',lastmsgid)) if (threadstart==messno) threadstart=0;
  79.                         get_mess(0);
  80.                         goto Over;
  81. DoBackward:
  82.         case CTRL_B:    if(!thread('B',lastreply)) if (threadstart==messno) threadstart=0;
  83.                         get_mess(0);
  84.                         goto Over;
  85.         case ALT_Q:     if(threadstart) messno=threadstart;
  86.                         threadstart=0;
  87.                         get_mess(0);
  88.                         goto Over;
  89.     }
  90.     threadstart=0;
  91.     switch(what) {
  92.         case CTRL_PGDN:
  93.         case RIGHT:
  94.                         wasdeleted=0;
  95. DownLoop:
  96.                         messno++;
  97.                         if (messno>nomess) {
  98.                             messno=1;
  99.                             any_message(" Rollover ");
  100.                             if (global) goto QuitNow;
  101.                         }
  102.                         get_mess(0);
  103.                         if(skipdeleted) {
  104.                             if((msg.m_attr & MSGDELETED) && !wasdeleted) {
  105.                                 wasdeleted=messno;
  106.                                 goto DownLoop;
  107.                             }
  108.                             if(wasdeleted==messno) {
  109.                                 any_message(" No undeleted messages this area--View deleted? (y/N) ");
  110.                                 if(toupper(generic_mouse_input(ewnd))=='Y') {
  111.                                     skipdeleted=0;
  112.                                 }
  113.                                 else goto QuitNow;
  114.                             }
  115.                         }
  116.                         if (type) if (!isitme(0)) goto DownLoop;
  117.                         wasdeleted=0;
  118.                         goto PartOver;
  119.         case CTRL_PGUP:
  120.         case LEFT:
  121.                         wasdeleted=0;
  122. UpLoop:
  123.                         if (messno==1) {
  124.                             messno=nomess;
  125.                             any_message(" Rollback ");
  126.                         }
  127.                         else messno--;
  128.                         get_mess(0);
  129.                         if(skipdeleted) {
  130.                             if((msg.m_attr & MSGDELETED) && !wasdeleted) {
  131.                                 wasdeleted=messno;
  132.                                 goto UpLoop;
  133.                             }
  134.                             if(wasdeleted==messno) {
  135.                                 any_message(" No undeleted messages this area--View deleted? (y/N) ");
  136.                                 if(toupper(generic_mouse_input(ewnd))=='Y') {
  137.                                     skipdeleted=0;
  138.                                 }
  139.                                 else goto QuitNow;
  140.                             }
  141.                         }
  142.                         if (type) if (!isitme(0)) goto UpLoop;
  143.                         wasdeleted=0;
  144.                         goto PartOver;
  145. QuitNow:
  146.         case 81:
  147.         case ESC:       if (!type) if (areano<(totalareas+1)) lastread[areano-1]=lastmess;
  148.                         break;
  149.         case F10:       move_mess();
  150.                         get_mess(0);
  151.                         goto Over;
  152.         case F9:        messno=select_mess();
  153.                         get_mess(0);
  154.                         goto Over;
  155.         case '<':
  156.                         if (!type) if (areano<(totalareas+1)) lastread[areano-1]=lastmess;
  157. AreaSub:
  158.                         areano--;
  159.                         if (!areano) areano=4095;
  160.                         nomess=check_area(areano);
  161.                         if (!nomess) {
  162.                             clear_message();
  163.                             if (kbhit()) if (get_char()==' ') return;
  164.                             goto AreaSub;
  165.                         }
  166.                         find_area();
  167.                         get_mess(0);
  168.                         goto AllOver;
  169.         case '>':
  170.                         if (!type) if (areano<(totalareas+1)) lastread[areano-1]=lastmess;
  171. AreaAdd:
  172.                         areano++;
  173.                         if (areano>4095) areano=1;
  174.                         nomess=check_area(areano);
  175.                         if (!nomess) {
  176.                             clear_message();
  177.                             if (kbhit()) if (get_char()==' ') return;
  178.                             goto AreaAdd;
  179.                         }
  180.                         find_area();
  181.                         get_mess(0);
  182.                         goto AllOver;
  183.         case F8:        if (!type) if (areano<(totalareas+1)) lastread[areano-1]=lastmess;
  184.                         areano=select_area();
  185.                         get_mess(0);
  186.                         goto AllOver;
  187.         case F7:        edit_mess(0);
  188.                         goto Over;
  189.         case CTRL_E:    make_file();
  190.                         goto Over;
  191.         case F6:        messno=search(0,0);
  192.                         get_mess(0);
  193.                         goto Over;
  194.         case 'R':
  195.         case F5:        tempmess=messno;
  196.                         strcpy(s,"MSGTMP");
  197.                         get_rid();
  198.                         if(!export(s,((currarea->attr & ALTERNATE) ||
  199.                           (currarea->attr & NET)),QUOTE,msg.date,msg.to,NULL)) {
  200.                             messno=tempmess;
  201.                             get_mess(0);
  202.                             goto Over;
  203.                         }
  204.                         if (set_header(1,msg.date,msg.from,msg.to)==ESC) {
  205.                             get_rid();
  206.                             messno=tempmess;
  207.                             get_mess(0);
  208.                             goto Over;
  209.                         }
  210.                         show_header(0);
  211.                         post_mess("");
  212.                         messno=tempmess;
  213.                         get_mess(0);
  214.                         goto Over;
  215.         case 'W':
  216.         case F4:        *assocfile=0;
  217.                         tempmess=messno;
  218.                         if (set_header(INFOONLY,"","","")==ESC) {
  219.                             get_rid();
  220.                             messno=tempmess;
  221.                             get_mess(0);
  222.                             goto Over;
  223.                         }
  224.                         show_header(0);
  225.                         post_mess("");
  226.                         messno=tempmess;
  227.                         get_mess(0);
  228.                         goto Over;
  229.         case F3:        tempmess=messno;
  230.                         edit_text();
  231.                         messno=tempmess;
  232.                         get_mess(0);
  233.                         goto Over;
  234.         case F2:        tempmess=messno;
  235.                         scan_mess();
  236.                         messno=tempmess;
  237.                         get_mess(0);
  238.                         goto Again;
  239.         case ALT_A:     if (!type) if (areano<(totalareas+1)) lastread[areano-1]=lastmess;
  240.                         tempmess=areano;
  241.                         areano=list_areas();
  242.                         if(!areano)areano=tempmess;
  243.                         find_area();
  244.                         nomess=check_area(areano);
  245.                         get_mess(0);
  246.                         goto AllOver;
  247.         case ALT_L:     tempmess=messno;
  248.                         messno=list_mess();
  249.                         if(!messno) messno=tempmess;
  250.                         get_mess(0);
  251.                         goto Over;
  252.         case CTRL_K:    killjunk();
  253.                         nomess=check_area(areano);
  254.                         if(!nomess) return;
  255.                         if(messno>nomess) messno=nomess;
  256.                         get_mess(0);
  257.                         goto Over;
  258.         case CTRL_L:    messno=search(1,0);
  259.                         get_mess(0);
  260.                         goto Over;
  261.         case CTRL_F6:   messno=search(1,1);
  262.                         get_mess(0);
  263.                         goto Over;
  264.         case CTRL_END:
  265.         case CTRL_HOME:
  266.                         get_mess(0);
  267.                         goto PartOver;
  268.         case ALT_1:
  269.         case ALT_2:
  270.         case ALT_3:
  271.         case ALT_4:
  272.         case ALT_5:
  273.         case ALT_6:
  274.         case ALT_7:
  275.         case ALT_8: what-=247;
  276.                     goto SetMarkerHere;
  277.         case ALT_9: what=9;
  278.                     goto SetMarkerHere;
  279.         case ALT_0: what=0;
  280. SetMarkerHere:
  281.                     messmarker[what]=messno;
  282.                     goto JustTheFacts;
  283.         case '1':
  284.         case '2':
  285.         case '3':
  286.         case '4':
  287.         case '5':
  288.         case '6':
  289.         case '7':
  290.         case '8':
  291.         case '9':
  292.         case '0':   if (!messmarker[what-'0']) goto JustTheFacts;
  293.                     messno=messmarker[what-'0'];
  294.                     get_mess(0);
  295.                     goto PartOver;
  296.         case CTRL_F1:    readtextcolor++;
  297.                         if(readtextcolor>15) readtextcolor=0;
  298.                         goto Over;
  299.         case CTRL_F2:    readtextback++;
  300.                         if(readtextback>7) readtextback=0;
  301.                         goto Over;
  302.         case CTRL_F3:   readheadcolor++;
  303.                         if(readheadcolor>15) readheadcolor=0;
  304.                         goto Over;
  305.         case CTRL_F4:   readheadback++;
  306.                         if(readheadback>7) readheadback=0;
  307.                         goto Over;
  308.         case CTRL_F5:   readstatcolor++;
  309.                         if(readstatcolor>15) readstatcolor=0;
  310.                         goto Over;
  311.         case CTRL_F7:   readstatback++;
  312.                         if(readstatback>7) readstatback=0;
  313.                         goto Over;
  314.         case CTRL_R:    *assocfile